Форум Сообщества Системных Аналитиков uml2.ru (Требования, ТЗ, UML, Примеры)
Сентября 03, 2010, 06:34:05 pm *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Школа для Аналитиков
Новости:
 
   Начало   Помощь Поиск Войти Регистрация  
Голосование
Вопрос: Драконы умеют летать, как птицы, и ползать, как ящерицы. С точки зрения ООП, примером чего является данная ситуация (выберите наиболее точный вариант)?
Наследование
Инкапсуляция
Множественное наследование
Полиморфизм
Композиция
правильных ответов нет или правильных ответов больше чем один.

Страниц: 1 2 3 4 5 »
  Печать  
Автор Тема: Вопрос из теста. Интересно, как бы вы на него ответили.  (Прочитано 5728 раз)
komarik
Newbie
*

Рейтинг читателей: 0
Сообщений: 19


Просмотр профиля
« : Сентября 10, 2009, 02:45:55 am »

Собсно интересует, я один думаю не так, как думают создатели теста или нет =)
Записан
Alexei Rylov
Newbie
*

Рейтинг читателей: 0
Сообщений: 2



Просмотр профиля
« Ответ #1 : Сентября 10, 2009, 09:13:34 am »

А как думают создатели теста? Что за тест? И какой ответ является правильным "с научной точки зрения"?  Подмигивающий
Записан

--------------------------
Что ещё за подпись? о_0
Galogen
Member of CAR
Hero Member
***

Рейтинг читателей: 61
Сообщений: 4021


Аксакал


Просмотр профиля WWW
« Ответ #2 : Сентября 10, 2009, 10:14:40 am »

Я ответил композиция. Хотя как мы понимаем и композиция тут не подходит. Может быть полиморфизм? Да наверное полиморфизм.

Почему не наследование.
Сущность - птица - имеет ряд свойств, в том числе умение летать
Сущность - ящерица - имеет ряд свойств, в том числе умение ползать.

Дракон - берет часть свойств птицы (крылья, умение летать) и ящерицы (4 ноги, плоское брюхо, умение ползать)

Однако - дракон - это не птица, хотя близко к ящерице. Может быть это ящерица, обладающая частью свойств птицы (реализующая интерфейс птицы), т.е. на самом деле мне кажется тут вообще нет корректного ответа

Если пойти от биологии, то вероятно - птица - это динозавр, но вот ящерица - далеко не факт, скорее пресмыкающее. Тогда мы можем выстроить другую цепочку: Дракон - это птица - это динозавр, тогда как бы ползать он как ящерица не может, так как у динозавров совершенно другое строение Улыбающийся
Записан

Эдуард aka galogen
greesha
Member of CAR
Hero Member
***

Рейтинг читателей: 23
Сообщений: 922



Просмотр профиля WWW
« Ответ #3 : Сентября 10, 2009, 11:20:43 am »

Это работодатели такие тесты раздают, что ли?
Записан

greesha.ru
жежешечка

Реальность - это убийство прекрасной теории бандой мерзких фактов. (Роберт Гласс)
komarik
Newbie
*

Рейтинг читателей: 0
Сообщений: 19


Просмотр профиля
« Ответ #4 : Сентября 10, 2009, 11:27:37 am »

"Правильный" ответ - множественное наследование.
Как я понял, логика примерно такая:
класс "Летун";
класс "Ползун";
класс Птица : "Летун";
класс Ящерица : "Ползун";
класс Дракон : "Леутн", "Ползун";

Мой ответ: Композиция
класс УмениеЛетать;
класс УмениеПолзать;
Класс Дракон
{
УмениеЛетать
УмениеПолзать
}

Как по мне, данный вариант подходит больше, чем вариант с наследованием, учитывая то, как задан вопрос.


Это работодатели такие тесты раздают, что ли?
нет, это просто тесты - http://www.quizful.net/test/oop_basics.
Записан
greesha
Member of CAR
Hero Member
***

Рейтинг читателей: 23
Сообщений: 922



Просмотр профиля WWW
« Ответ #5 : Сентября 10, 2009, 11:35:13 am »

Мне тоже множественное наследование не нравится. Если решать задачу в лоб, то полученная модель искажает реальность: драконы не являются птицами, а абстрактные классы летунов и ползунов сразу сильно усложняют модель.

Но вообще, такие задачи нельзя решать в отрыве от контекста.
Записан

greesha.ru
жежешечка

Реальность - это убийство прекрасной теории бандой мерзких фактов. (Роберт Гласс)
Бабихин Максим
Jr. Member
**

Рейтинг читателей: 1
Сообщений: 81


Просмотр профиля
« Ответ #6 : Сентября 10, 2009, 12:05:43 pm »

На мой взгляд все зависит от конкретной реализации...Можно представить, что дракон появился от скрещивания птицы и ящера, тогда одно решение. А можно представить, что это вообще отдельное создание, тогда рожденный ползать летать не может. У задачи просто не может быть правильного ответа.
« Последнее редактирование: Сентября 10, 2009, 12:07:42 pm от Babikhin M. » Записан
javenue
Newbie
*

Рейтинг читателей: 0
Сообщений: 9


Просмотр профиля
« Ответ #7 : Сентября 10, 2009, 12:50:30 pm »

Интересно, почему некоторые думают, что наследование - это только "is-a"? На сколько я понимаю, птица и ящерица приведены как пример.

В вопросе явно указаны слова "летать"  и "ползать" - это поведение. То есть некие классы (или интерфейсы) - не важно как их назвать (CanFly, Flyable, FlyAware) наделяют дракона новым поведением. Это наследование. А так как есть 2 таких поведения, то это множественное наследование.

Кстати, композиция не совсем подходит, так как композиция описывает жестку связь между двумя объектами, а умение летать не является частью дракона. Может еще с натяжкой можно указать агрегацию, но такого варианта в ответах нет. Кроме того, для агрегации и композиции ООП не нужно. Можно в Си на структурах их реализовать, ну или на джаваскрипте запихнуть объект в объект.

Полиморфизм имеет смысл когда мы говорим о полиморфном поведении. То есть если бы задача стояла работать с птицей и драконом одинаковым образом (запускать их с балкона что ли), то полиморфизм бы подошел.

Учитывая, что нужно выбрать наиболее подходящий вариант, подходит именно множественное наследование.
Записан
Ontology Nazi
Member of CAR
Hero Member
***

Рейтинг читателей: 19
Сообщений: 1200


Hero of Math and Logic


Просмотр профиля WWW
« Ответ #8 : Сентября 10, 2009, 01:10:08 pm »

боже мой, какая херня
Записан
komarik
Newbie
*

Рейтинг читателей: 0
Сообщений: 19


Просмотр профиля
« Ответ #9 : Сентября 10, 2009, 01:19:22 pm »

боже мой, какая херня
четко и многозначительно одновременно =)
это ответ на какой пост? (хотя интуитивно догадываюсь)
Записан
Galogen
Member of CAR
Hero Member
***

Рейтинг читателей: 61
Сообщений: 4021


Аксакал


Просмотр профиля WWW
« Ответ #10 : Сентября 10, 2009, 01:20:27 pm »

Интересно, почему некоторые думают, что наследование - это только "is-a"? На сколько я понимаю, птица и ящерица приведены как пример.
А что может быть еще?

Учитывая, что нужно выбрать наиболее подходящий вариант, подходит именно множественное наследование.
Если поступать формально - да множественное наследование. Дракон это и птица, и ящерица. А если вспомнить легенду, то и человек, так как умеет говорить и мыслить Улыбающийся

Возможны Вы правы в своих рассуждениях. Особенно если не принимать глубокий смысл задания Улыбающийся
Записан

Эдуард aka galogen
javenue
Newbie
*

Рейтинг читателей: 0
Сообщений: 9


Просмотр профиля
« Ответ #11 : Сентября 10, 2009, 01:29:24 pm »

Советую почитать о наследовании и о том, что кроме наследования реализации есть еще и наследование интерфейса (API).
Что то типа такого получается:
class Flyable {
    public: virtual void fly();
};
class Dragon : Flyable {
    public: void fly() { ... }
};
Записан
ida
Sr. Member
****

Рейтинг читателей: 15
Сообщений: 371


I dont speak english


Просмотр профиля WWW
« Ответ #12 : Сентября 10, 2009, 03:34:51 pm »

Выбрала множественное наследование, но я себе слабо представляю полиморфизм.
Первые два точно нет.
Насчет композиции - может быть в этом каверзность вопроса, но я бы сказала, что это вариант, который может подойти после дополнительных вопросов (ибо для каких целей будут использоваться методы летать и ползать, неясно). Именно в такой постановке - нет.

Вообще от тестовых заданий конечно порой хочется стучаться лбом о стену. А от того, что их воспринимают всерьез те, кто проводит собеседования - и еще кое по чему постучать.

В-частности, возможно, это хороший способ оценить программиста, но для аналитика - человека, чьей ключевой задачей является взаимодействие - просто немыслимо дать ожидаемый ответ. И получается, что оценивается не твоя способность к взаимодействию, а то, угадал ты, что хотел сказать автор теста (видя обоих впервые), или нет.
« Последнее редактирование: Сентября 10, 2009, 05:59:26 pm от ida » Записан

"Я люблю бывать в гостях у своих друзей-музыкантов - это единственное место, где не говорят о музыке" (с)
Журнал профессионального аналитика
Виталий Григораш
Member of CAR
Hero Member
***

Рейтинг читателей: 12
Сообщений: 510



Просмотр профиля WWW
« Ответ #13 : Сентября 10, 2009, 05:47:36 pm »

Вся страна играет в угадайку. И сюда добрались Улыбающийся
Записан

Если вы не знаете куда идете, то вы вряд ли туда дойдете [Форест Гамп]
www.grigorash.ru
alec7777
Newbie
*

Рейтинг читателей: 0
Сообщений: 1


Просмотр профиля
« Ответ #14 : Сентября 10, 2009, 05:55:27 pm »

Я бы выбирал между   наследованием и композицией, зависит от языка реализации.

Например  при реализации на Javа пришлось бы реализовавать как композицию.
Но никак не полиморфизм.

О и как следствие, композиция более общий случай, правильный вариант (IMXO) композиция.

Записан
Страниц: 1 2 3 4 5 »
  Печать  
 
Перейти в:  

Книга <<Моделирование на UML. Теория, практика, видеокурс>>
Powered by MySQL Powered by PHP Powered by SMF 1.1.9 | SMF © 2006, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!